﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using QuanLyDeTaiKHCN.Obj_class;
using SecurityLib;
namespace QuanLyDeTaiKHCN.UserControls
{
    public partial class DanhMucNguoiDung : System.Web.UI.UserControl
    {
        PasswordHasherEncrypt _ps = new PasswordHasherEncrypt();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindGrid();
            }
        }
        protected void BindGrid()
        {
            _dbDataContext _db = new _dbDataContext();
            var val = _db.tblAcounts.Where(r=>r.TenDangNhap.Trim().ToUpper()!="ADMIN").ToList();
            grid.DataSource = val;
            grid.DataBind();
        }

        protected void grid_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "ChonTaiKhoan")
            {
                txtid.Value = grid.DataKeys[int.Parse(e.CommandArgument.ToString())].Value.ToString();
                txtTenHienThi.Text = ((Label)grid.Rows[int.Parse(e.CommandArgument.ToString())].FindControl("lblTenHienThi")).Text.Trim();
                txtTenDangNhap.Text = ((Label)grid.Rows[int.Parse(e.CommandArgument.ToString())].FindControl("lblTaiKhoanDangNhap")).Text.Trim();
                chkgrant.Checked = ((CheckBox)grid.Rows[int.Parse(e.CommandArgument.ToString())].FindControl("chkPhanQuyen")).Checked;
                txtTenHienThi.ReadOnly = true;
                txtTenDangNhap.ReadOnly = true;
            }
            else if (e.CommandName == "DeleteAcount")
            {
                CatalogAccess.DeleteAcount(int.Parse(e.CommandArgument.ToString()));
                BindGrid();
            }
        }

        protected void btnadd_Click(object sender, EventArgs e)
        {
            txtid.Value = "";
            txtTenDangNhap.ReadOnly = false;
            txtTenHienThi.ReadOnly = false;
            txtTenDangNhap.Text = "";
            txtTenHienThi.Text = "";
            txtMatKhauDangNhap.Text = "";
            chkgrant.Checked = false;
        }

        protected void btnsave_Click(object sender, EventArgs e)
        {
            if (txtid.Value == "")//trường hợp thêm mới
            {
                if (CatalogAccess.KiemTraTrungTenDangNhap(txtTenDangNhap.Text) == true)
                {
                    lblstatus.Text = "Tên đăng nhâp " + txtTenDangNhap.Text + " đã được sử dụng";
                }
                else
                {
                    if (txtTenHienThi.Text == "")
                    {
                        lblstatus.Text = "Chưa nhập tên hiển thị";
                        return;
                    }
                    if (txtTenDangNhap.Text == "")
                    {
                        lblstatus.Text = "Chưa nhập tên đăng nhập";
                        return;
                    }
                    if (txtMatKhauDangNhap.Text == "")
                    {
                        lblstatus.Text = "Chưa nhập mật khẩu";
                        return;
                    }
                    if (CatalogAccess.InsertAcount(txtTenHienThi.Text, txtTenDangNhap.Text, _ps.Hash_SHA1(_ps.EncryptPassword_MD5(txtMatKhauDangNhap.Text)), chkgrant.Checked) == true)
                    {
                        _dbDataContext _db = new _dbDataContext();
                        lblstatus.Text = "Đã thêm thành công.";
                        BindGrid();
                        int maxid = _db.tblAcounts.Max(r => r.ID);
                        tblUserInRole _tb = new tblUserInRole();
                        _tb.UserID = maxid;
                        _tb.RolesID = 1;
                        _tb.PhanQuyen = true;
                        try
                        {
                            _db.tblUserInRoles.InsertOnSubmit(_tb);
                            _db.SubmitChanges();
                        }
                        catch { }
                    }
                    else
                    {
                        lblstatus.Text = "Không thêm được xin kiểm tra lại";
                    }
                }
            }
            else//trường hợp cập nhật
            {
                if (txtMatKhauDangNhap.Text == "")
                {
                    if (CatalogAccess.UpdateAcount(txtTenDangNhap.Text, chkgrant.Checked) == true)
                    {
                        lblstatus.Text = "Đã lưu thành công.";
                    }
                    else
                    {
                        lblstatus.Text = "Không lưu được, xin kiểm tra lại";
                    }
                }
                else
                {
                    if (CatalogAccess.UpdateAcount(txtTenDangNhap.Text,_ps.Hash_SHA1(_ps.EncryptPassword_MD5(txtMatKhauDangNhap.Text)),chkgrant.Checked)==true)
                    {
                        lblstatus.Text = "Đã lưu thành công.";
                    }
                    else
                    {
                        lblstatus.Text = "Không lưu được, xin kiểm tra lại";
                    }
                }
            }
        }
    }
}